Interactive television framework utilizing program-synchronous triggers and standard messaging and presence-detection protocols

ABSTRACT

A system for enabling nodes of a client-server network to interact with broadcast program content, the system includes a server node that can detect the presence on the network of one or more client nodes; a trigger extractor that can extract program-synchronous triggers from within the content of a broadcast program; and an application manager that, in response to extraction of a program-synchronous trigger from a broadcast program, can facilitate interactive communication, relating to the broadcast program content, between the server node and one or more client nodes whose presence on the network has been detected.

This application is a continuation of U.S. application Ser. No.12/377,808, filed Feb. 17, 2009, and claims priority under 35 U.S.C.§120 to PCT/US2007/018263, filed Aug. 17, 2007, which claims priority toU.S. Provisional Application No. 60/822,740, filed Aug. 17, 2006, thecontents of each application is incorporated herein by reference in itsentirety.

BACKGROUND

Although interactive television (ITV) has been in an experimental modefor decades, few if any implementations have proven sufficientlysuccessful to merit long-term acceptance. With the rapid advances inmicroprocessor speed, memory capacity and various related computer andbroadcast audio and video technologies, including the advent of theInternet into the home, it might appear that the technical obstacles tothe development of interactive television applications are diminishing.

While this may in part be the case, a number of significant barriers tointeractive television application development remain. In particular,the lack of standards for deploying interactive content in aclient-server communications environment has severely impeded thedevelopment of interactive television applications.

For example, ITV implementations typically insert specialized contentinto a broadcast program's “VBI” (vertical blanking interval, ormetadata within the digital equivalent of the VBI for digitalbroadcasts) to trigger interaction between a program viewer and thepurveyor of an interactive application (e.g., an advertiser, gameprovider or seller of various products or services). This content couldbe as simple as a URL that enables viewers to access Internet contentrelated to a particular segment of the broadcast program. Or it couldenable viewers to invoke and interact with a proprietary application,such as a game, or perhaps an informational or commercial service toresearch a related topic in greater depth, obtain a mortgage or otherloan, or shop for related merchandise.

Prior ITV implementations typically rely on a scheduling mechanism,employing proprietary applications to manage interaction andcommunication with viewers. For example, such an application insertsspecialized content “triggers” into a broadcast program at specifictimes known to the application. The application can then scheduleintervals during which the viewer can interact synchronously with thesetriggers. Yet, if schedules change and content is broadcast at differenttimes, it is extremely difficult to synchronize the insertion of thesetriggers with the appropriate segment of the broadcast content.

In addition to the overhead and inflexibility inherent in maintainingsuch triggering of interactive content, these applications also musthandle client-server communications, including user authentication,presence detection and the exchange of messages for each particularinteractive application.

Rather than leverage existing standards, these interactive applicationshave been either proprietary, requiring extensive development andintegration within the environments of the broadcaster and interactivecontent provider, or relatively trivial, as is the case with simple URLtriggers.

What is needed is a more standardized platform for the development ofinteractive applications that can leverage existing communicationsstandards while still supporting complex applications that provideviewers with a rich interactive experience.

SUMMARY

The present invention is an enhanced television application that allowsviewers to participate in a program-related service, such as a quiz or agame, on their PC or their TV, using content that is synchronous to theprogram they are watching. Program-synchronous games and applicationsare a proven method for boosting a program or network's brand and viewerloyalty.

For networks and program producers, the invention enables a creativetool to broaden a show's experience as well as a practical tool to keepviewers watching longer. It provides advertisers with new ways to targettheir ads to an increasingly disparate television viewing audience.Viewers are thus afforded a fun new way to get even more entertainmentor information from their favorite television programs.

The invention includes a scalable ITV application framework. It utilizestriggers inserted directly into a program's VBI such that the programbroadcast to clients and servers within the framework includesprogram-synchronous triggers. Upon detecting these program-synchronoustriggers (each with its own unique ID) within a broadcast program,servers of the present invention then leverage existing communicationstandards to interact with clients to invoke and implement client-serverITV applications.

The framework of the present invention is built upon a Jabbercommunications layer—i.e., a set of streaming XML protocols, includingthe Extensible Messaging and Presence Protocol (XMPP), that has been thesubject of various RFCs considered and approved by the InternetEngineering Task Force (IETF). The need to detect the presence ofclients and servers, and enable them to send messages to one another iscentral to virtually any ITV application. By leveraging thesecommunication standards, the present invention significantly simplifiesand reduces the time required for the development of ITV applications,as well as enhancing their interoperability.

The system is made up of the following core components:

-   -   VBI Triggers for storing program-synchronous trigger data    -   Jabber communication layer    -   Client Applications    -   Jabber Software “Agents” for managing user interaction    -   The Trigger Manager Application (TiM)    -   A Content Management System (CMS)

During an enhanced broadcast, synchronous triggers are read from theprogram videotape and sent to a Jabber Agent via a socket connectionusing the XMPP protocol. The Jabber Agent translates the trigger intothe appropriate content and then sends the appropriate message to theJabber Server. The Jabber server broadcasts the message to all of theattached clients.

Trigger Insertion is handled via the Trigger Manager (TiM), aFlash-based GUI which can control playback on a video deck and insertthe related triggers. Content Entry can be done via either a web-basedcontent entry tool or the Trigger Manager itself. During live events,the Trigger Manager can bypass the VBI to send triggers to the attachedclients via the Jabber Server.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a conceptual system architecture of the presentinvention.

FIG. 2 illustrates key components of a Content Management System (CMS)of the present invention.

FIG. 3 illustrates a portion of the user interface of a Trigger Manager(TiM) of the present invention.

FIG. 4 illustrates the conceptual interaction between the TiM of thepresent invention and two server-based applications for encodingtriggers into the VBI of a broadcast program and storing on videotapethe broadcast program with these embedded program-synchronous triggers.

DETAILED DESCRIPTION

Before examining the architecture of the present invention, it ishelpful to introduce some of the key terminology used in describingcomponents of the system.

Definitions

VBI—Short for Vertical Blanking Interval, the VBI is the part of atelevision transmission signal that is blanked, or left clear, ofviewable content, to allow time for the television's electron gun tomove from the bottom to the top of the screen as it scans images. Theterm is used herein to encompass digital (as well as analog)transmissions, in which a digital analogue of the VBI is represented bymetadata occupying a portion of the bitstream to be broadcast. Thisblank area is currently being used to broadcast closed-caption andHTML-formatted information. Because the data is actually embedded withthe content, the VBI can be used for inserting program-synchronoustrigger data.

TCP/IP SOCKET—A TCP/IP Socket (Socket) is the core of most internetconnections. It is the virtual pipe between two networked computersthrough which data is passed. The communication on this pipe is definedby a particular protocol (e.g., XMPP).

XMPP—XMPP is an open, XML-based protocol for near real-time extensiblemessaging and presence detection. It is the core protocol of the JabberInstant Messaging and Presence technology. In a preferred embodiment ofthe present invention, XMPP is the language that is communicated overthe TCP/IP Sockets.

JABBER—Jabber is a set of streaming XML protocols and technologies thatenable any two entities on the Internet to exchange messages, presence,and other structured information in close to real time.

SERVER—A server is a computer or device on a network that managesnetwork resources. An example is a web server that serves web pages oran email server that handles email. There are three main servers in oneembodiment of the present invention: a Jabber server for handlingcommunications, a Database server for storing data, and an Applicationserver for processing data.

CLIENT—Typically, a client is an application that runs on a personalcomputer or workstation and relies on a server to perform certainoperations. For example, an email client is an application that enablesone to send and receive email. Similarly, a web browser is a client thatinterprets and displays web pages. In client-server architectures, aclient designed to be relatively small with most of the data processingdone on the server side is considered a thin client, as opposed tolarger monolithic applications called thick clients. Most set-top-boxesare designed to be relatively thin clients.

GATEWAY—A gateway is a node on a network that serves as an entrance toanother network. In the context of the present invention, a gateway canbe used as an entrance to the ITV systems of a “Multiple SystemOperator” or MSO.

Overview

By inserting program-synchronous triggers into the VBI of a broadcastprogram, a server of the present invention can extract these triggerswithout regard to any prior schedule. For example, a program might bedelayed and broadcast at a time later than was originally scheduled;yet, the program-synchronous triggers will still be broadcast during theappropriate portions of the broadcast program, enabling communicationwith clients at the appropriate time.

Unique program-synchronous trigger IDs also facilitate flexibility byenabling triggers to be independent of particular programs or timeslots, as well as the application that it triggers. The same triggercould thus be used by different applications, as well as differentproviders.

Unlike prior systems, which relied on simple URLs that a client browsercould use for navigation, or proprietary client-server applications,which required custom communications protocols for each application, thepresent invention relies on standard communication protocols (XMPP in apreferred embodiment) that simplify implementations of the basic formsof communication inherent in virtually any ITV application. Thesestandard protocols also enable a rich set of core features, such as theability to track presence information—e.g., while a user is interactingwith a client application invoked by a particular trigger.

Turning to a preferred embodiment of the system architecture 100 of thepresent invention, as illustrated in FIG. 1, a client-serverarchitecture is employed in which servers 125 as well as clients 175 aand 175 b can receive broadcast programs (not shown)—withprogram-synchronous triggers already inserted into the program beingbroadcast. Broadcasts can occur over virtually any broadcast medium,including cable (CATV), satellite (DBS) and terrestrial (OTA) systems.

Server 125 extracts program-synchronous triggers from broadcast programs(via VBI Decoder 130) and communicates with clients 175 a and 175 b overthe Internet 150, typically via a TCP/IP connection. Such near real-timecommunication enables clients to respond to triggers at appropriatetimes (i.e., synchronously) while running client-server ITV applications(typically downloaded from Server 125 over the Internet 150).

Client devices can include personal computers running clientapplications, such as two-screen Flash client 175 a (e.g., a PC or MAC),set-top boxes, such as client 175 b (which communicates with theInternet 150 via MSO Gateway 180), as well as a vast array of otherspecialized and integrated computing devices, including televisions,digital video recorders, PDAs and mobile phones.

Servers such as server 125 include various components to perform genericcore communication functions (e.g., establishing connections,authenticating users, tracking presence, exchanging messages, etc), aswell as application-specific functionality (e.g., maintaining scores andstatistics for a game application), which may be facilitated by certainaspects of the core functionality. Servers may be implemented viadifferent software layers for communication, display andapplication-specific functionality.

In a preferred embodiment, server 125 includes the following keycomponents: VBI Decoder 130 for extracting program-synchronous triggersfrom a broadcast program, Game Manager 135 for performingapplication-specific functionality relating to a game application(examples of which are discussed in greater detail below), Jabber Server140 for managing communications with clients 175 a and 175 b, andDatabase 145 for storing various information relating to clients andtheir connections, as well as application-specific data such as gamescores and statistics. It should be noted that these components could beimplemented as part of a single server 125, or as separate hardware andsoftware components that work together (e.g., as separate devices on aLAN or WAN).

During a synchronous event, trigger IDs are extracted from VBI Decoder130 and delivered to Game Manager 135, which responds by generating theappropriate content which Jabber (communication) Server 140 delivers tothe appropriate clients. Such information typically is delivered totwo-screen Flash clients (such as client 175 a) via the Internet 150,while set-top box clients can be handled in a variety of ways. For thoseset-top boxes with compatible client software, the events can be sentdirectly via the Internet 150. For non-compatible clients, the eventscan be sent indirectly via the Internet 150 through an MSO gateway 180,which can then translate the information into the appropriate format.Connections to MSO gateways could also be established via the Internet150, as opposed to a direct point-to-point connection.

Application-specific data handling is performed in this embodiment viaGame Manager 135, which utilizes Database 145 for event translation,score handling, user maintenance, and reporting. Due to the use ofstandard Jabber/XMPP protocols, Game Manager 135 can be implemented as aset of Jabber software modules, each handling different tasks, whichgreatly simplifies the development process, substantially reducesdevelopment time and facilitates compatibility both within and among ITVapplications.

VBI Triggers

The core timing mechanism and trigger storage of a preferred embodimentof the present invention is achieved via program-synchronous triggersinserted into the program's broadcast. This technique enables triggersto be inserted “in time” with a broadcast. Though utilizing the VBI isessentially an analog hack for transmitting information, virtually alldigital video encoding mechanisms (e.g., those from Norpack Corporationin Canada) offer similar functionality.

Advantages

Inserting triggers into the actual broadcast stream offers numerousadvantages.

-   -   Triggers v Scheduling. Most currently deployed mechanisms rely        on a scheduling mechanism based off a network's automation        system for their synchronicity. This requires the maintenance of        some sort of scheduling list. Inserting triggers into an actual        program's broadcast eliminates this human element.    -   Triggering of Advertising. Because ads are independent of        program data, most current program-synchronous applications        cannot handle synchronous ads. By inserting triggers into the        ads, there will be a seamless integration of various synchronous        advertising units with program-synchronous applications.    -   Syndication. Because the trigger insertion does not require        scheduling and has no ties to networks' proprietary automation        systems, enhanced programs can continue to be enhanced in        syndication with minimal effort. This also facilitates the        ability of production houses external to the network to provide        enhanced content.        Jabber Communication Layer

Jabber is an open set of protocols and technologies used to exchangemessages in real time. In describing Jabber, it is important to notethat Jabber is not any one thing; instead, it is a collection ofdifferent bits of technology that, in essence, establishes a set ofrules governing how various applications work and interact with oneanother. Jabber was originally developed as an open alternative toclosed Instant Messaging services such as AOL Instant Messenger (AIM)™and Mirabalis' ICQ™. From the ground up, Jabber was designed to overcomemany of the disadvantages of these proprietary systems, as well as totake advantage of various technological advances.

Utilizing Jabber in a preferred embodiment of the server providesseveral core services out of one box, including gaming, chat, IM, and adtracking. At the heart of Jabber is XMPP, which defines the handling ofstandard tasks such as user authentication, presence, and messaging.

Advantages

-   -   It Exists. Perhaps Jabber's greatest strength is that Jabber has        already been developed and is a proven technology. It has        already been implemented on a variety of operating systems and        for a multitude of uses. There are existing code libraries, as        well as established development houses that can be used to        bootstrap development efforts.    -   Designed for thin clients. Jabber has been designed for the        server side to perform most of the heavy lifting. This        translates well to the set-top-box paradigm: thin clients on a        set-top box supported by a robust backend    -   Scalable. Jabber has been designed from the ground up to be a        distributed system. It is designed to make it easy to tie        different implementations together in order to increase        functionality. For example, a network could have its own        implementation simply for providing two-screen functionality to        its users. If they then want to expand for an MSO's set-top box        implementation, they can simply place a gateway in front of the        MSO's system for translation into their proprietary        implementation.    -   Gateways to other application systems. Already in existence are        servers that can convert Jabber communication to AIM, YahooIM,        SMTP (e-mail) and other external messaging solutions.    -   Extensible functionality. While designed for IM and Chat, Jabber        is well-suited for other applications, such as        program-synchronous content, ad tracking, and providing        real-time stock, weather and sports information.        Jabber Game Manager and Other Jabber Agents

Jabber is essentially a “dumb” (albeit highly extensible) system. It isnot so much a server as a packet router which tells data where to go.Outside of user authentication and management, it does very little“thinking” in its day-to-day operation. The creation of add-on modulesallows for increased functionality, and is what makes Jabber a much morerobust system.

Essentially, these agents are simply automated users on the Jabbersystem similar to AIM's “chat bots”. These agents can be written in avariety of programming languages and there are several code librariesavailable to bootstrap this process. Perhaps the most essential agentfor the gaming platform of a preferred embodiment of the presentinvention is the GameManager agent. This agent handles game play, datahandling and scoring during a program-synchronous game.

In order to increase functionality, a variety of additional agentshandle different tasks such as user registration, the posting of highscores, and handling of requests for supplemental information (such asad handling and ad trafficking).

Clients

The use of Flash for two-screen gaming and other aspects of the userinterface provided by ITV applications provides several advantages:

-   -   Flexible UI. Flash applications are relatively easy to develop.        Flash also offers all of the required functionality, wrapped in        an extremely dynamic system for creating web-based user        interfaces.    -   Existing Usable Code. Flash development efforts can be        jumpstarted by utilizing the XMPP Implementation for Flash        (XIFF) library.    -   Ubiquitous. According to macromedia.com, Flash is installed in        98% of all web browsers.

Flash does have some limitations. The main limitation is that it is nota secure client: there are many existing applications that allow fordecompiling of Flash applications. An additional issue is the lack ofSSL implementations over persistent socket connections, which meansusers with packet sniffing tools can intercept network traffic.

Client implementations of the gaming platform could be installed onset-top boxes as well as two-screen clients; or, given the extensiblenature of the Jabber system and the use of standard XML packets over aTCP/IP socket, the communication layer could be ported to existingset-top box implementations (e.g., OCAP OnRamp J2ME-based boxes). Overtime, it is expected that many set-top box systems will themselvesinclude Flash implementations.

Content Management System

In order to manage the content related to a particular ITV application,as well as to core services such as client connections and chat, apreferred embodiment of the present invention includes a distinctcontent management system 200, illustrated in FIG. 2. CMS 200 includesthree primary components.

The first is a database 145. This is where all the data is stored. Thede-facto standards in this area are either Oracle on Unix-based systems(Linux, Solaris, and Debian, sometimes referred to as *nix). ForWindows-based systems, either Oracle or MSSQL databases are preferred.There are open source and free database systems such as MySQL,PostgreSQL and Firebird; however, the commercial systems are generallymore robust.

The second part of CMS 200 is an application server 225. There are avast variety of application servers available running virtually anyprogramming language. This is where the majority of the CMS developmentwork is done. Currently in the front running for the primary applicationserver on *nix-based enterprise level systems are Java Server Pages(usually running the Tomcat JSP engine), developed by the open sourceApache development group. Application server 225 handles both businessand display logic for most content management systems.

The final part of CMS 200 is the Content Management Application (CMA).CMA 250 is the interface that users utilize to insert, edit and deletedata. This typically takes the form of a standard HTML web-basedinterface. In one embodiment, however, trigger management tool (TiM) 300(discussed in greater detail below) would be a Flash application.

Trigger Manager

The Trigger Manager (TiM) 300, illustrated in FIG. 3, is the applicationused by the content producer to coordinate the interactive content andinsert program-synchronous triggers into the broadcast. TiM is actuallya collection of small parts in a preferred embodiment of the presentinvention. The first is its main UI, which is built in Flash. Thisinterface is where the user enters data and seeks the necessary timeplacements for trigger insertion.

Utilizing Flash for trigger management offers several advantages to somecurrent systems. The first: it is far superior to a standard web-basedinterface (currently used as GoldPocket's content producer). As a richInternet application, it is an improved method for handling dynamicdata. The second advantage: it is a deployed application across the web,making an entire system very easy to update.

In this embodiment, system “users” (i.e., authors of ITV applications)can select hostname and IP addresses of connected devices, such as thedesired VBI encoder IP address 301, the Database hostname 302 and thehostname 303 of the VTR server (for recording the program with encodedprogram-synchronous triggers on videotape). The connected state 305 ofthese devices can be reflected, e.g., by a color change from red(disconnected) to green (connected).

Trigger-based events 310 can be listed in grid 311. Individual eventscan be edited in grid 312, while new events can be added via button 313and assigned unique IDs 314. A particular list of triggers can be loadedand saved, respectively, via buttons 315 and 320.

Once the desired trigger events are created, they can be inserted intothe appropriate portions of the program's videotape, via editabletimecode field 321 (to jump to the appropriate point on the videotape),live timecode window 322 (showing the current location on the videotape)and VTR transport controls 325 (REW, STOP, PLAY, FFWD, etc). MARK INbutton 326 updates the timecode and adds the highlighted trigger item tothe appropriate point on the videotape. Buttons 327 trim the highlightedtrigger (i.e., inserting it for a shorter or longer duration, making fora better fit with the program content), while button 328 clears thehighlighted trigger.

In addition to the Flash-based UI, there are a few small softwarecomponents used to extend Flash's capabilities, illustrated in FIG. 4.They are two server applications in this embodiment: one 430 that theFlash-based UI connects to via a socket connection that controls the VBIEncoder, and a second small application 410 that controls the Video TapeRecorder (VTR).

Use Scenarios

To better illustrate how the components of the present invention worktogether, embodiments of various “use scenarios” in the context of atrivia game application are presented below, including a “two-screen”game, a “one-screen” set-top box game and a “one screen” “walled garden”(ie, limited content) game.

Two Screen Jabber Trivia Game Embodiment

Introduction

In the context of this “two-screen” program-synchronous gamingapplication, the client application is a web-based flash application,and communication is achieved via a TCP/IP connection. The applicationis a trivia game based on information supplied by the associatedprogram. From the user's perspective, the user will launch theapplication prior to the start of the broadcast program. Once launched,the client application will logon and be authenticated with the Jabberserver using a user-supplied username and password. At this point, therewill be a persistent session created with constant communication betweenthe client and server applications.

There will be three main types of client-server communication: Chatcommunication between the client application and the server, Trigger andGame information sent from the server to the client, and Presenceinformation sent from the client to the server. All communication isasynchronous and is in the form of Jabber XMPP packets. Identificationof all Jabber elements is in the form of a MD (Jabber ID).

Initialization

Opening of Communication Layer

Upon the start of the client application, a TCP/IP socket connection ismade from a Flash client to the Jabber server. The client will have theability to attempt to connect to a number of named servers in order.Server names can be maintained in a list local to the client. This willenable a client to overcome a service outage on the main Jabber server.If the client cannot connect to the primary listed server, the clientwill simply try one of the next listed backup servers.

The core of the communication will be handled via Flash's XMLHTTPSocketObjects and are transparent to the user. Once the communication layer isopen, the first exchange of XMPP header packets are sent. These packetsopen and initialize the XMPP stream. The stream is not fully open,however, at this point. No messaging occurs until the registration andauthentication phases are complete.

Registration Phase (Optional)

Immediately following the exchange of XMPP headers, the optionalregistration phase begins. In the case of an existing user, noregistration occurs; instead, the process skips ahead to theauthentication phase. All communication during this phase isaccomplished via the XMPP protocol. To create an account, the clientinitially makes a request to discover which information is required fromthe server. The server then sends a list of required data. The clientthen responds with user-supplied data. The server then validates thisdata, and the registration is either denied or accepted. Following theregistration phase, the client is passed to the authentication phase. Atthis point, there is still not a full session until the authenticationis complete.

Authentication Phase

In the case of an existing user, where the registration phase isbypassed, authentication is performed via a user-supplied username andpassword. In the case where a new user is created, authentication isaccomplished via a username and password supplied from the registrationphase. In this phase, the username and password is passed to the server.The password can either be passed via plaintext or via a list ofserver-accepted encryption schemes. When authentication fails, the usercan either re-enter user information or restart from the registrationphase. Upon successful authentication, the user session is then created.

Queued Message Processing

Following successful authentication, any queued messages are thenprocessed. These might be server-based “Message of The Day” messages, orcurrently active game events. At this point, the session is fullyinitialized and standard messaging can occur.

Gameplay

As noted above, gameplay involves three primary types of messaging:Chat, Gameplay messages and Presence messages. Chat messages enable gameplayers to chat with one another during gameplay. In addition tohandling existing substantive chat messages, chat room exploratorymessages and room creation and administrative messages are alsoprocessed. Gameplay messages are handled via a specially defined type ofXMPP Messaging packets and involve the required gameplay triggers andgame data. Presence packets are used for two purposes. These packets areused by the server to determine whether or not the connection needs tobe maintained, as well as for collecting usage statistics.

Chat

In a chat situation, there are two main types of Messaging packets. Thefirst are “message” packets. Message packets can contain the followingtypes of data. The recipient is specified in the form of a RD, whichidentifies the current chat room There is a “type” attribute thatdetermines which type of packet is being sent. The “from” attributeidentifies the chat room from which the message is sent. The “body”attribute contains the actual text of the message. Finally there is an“error” message for error messaging. The message packets are the core ofchat communication. In one embodiment, a common message packet lookslike the following:

  Sample Chat Message Packet:   <message to=’someone@gameserver.com”from=’chatroom1@gameserver.com’ type=’message’>     <body>Hey what's thenext question?</body>    </message>

The second type of chat-related packets are Information Query (IQ)packets. These IQ packets are used by the client to query informationfrom the server. In addition to the “to”, “from”, “body” and “error”types also common to message packets, the IQ packets can be used tomodify state information on the server or to query the server for chatroom and user information. IQ packets generally come in the form of“set” or “get” messages. “Get” messages are used to acquire informationfrom the server, while “set” messages transmit information to theserver.

Sample IQ Packet: <iq id=’get_roster_0001’ type=’get’>   <queryxmlns=’jabber:iq:roster’ />  </iq>

Chat messaging is extensible via custom development, though currentJabber chat-messaging protocols are sufficient for the functionalitydiscussed in this embodiment.

Gameplay

In this embodiment, Gameplay messaging is implemented by extendingexisting Jabber messaging XML packets to add a new “game” message typeattribute and extend “x” messaging child nodes. “X” child nodes describea message child node that can use either Jabber-defined customnamespaces or user-defined namespaces. [Note: a namespace is defined bya colon in XML so <x:oop> would define an oop namespace, andx:stuntrocket another.]

Gameplay messaging includes 3 primary types in this embodiment:Server-to-Client communication of timed trigger events and event data,Client-to-Server communication of event responses and Server-to-Clientcommunication of related game data such as high scores and ad updates.

Server-to-Client communication of timed trigger events and event data issent synchronized with the program content. A trigger sent in thecontext of a two-screen game using a Flash client will synchronize thetransmission of the question data with the associated broadcast. Forone-screen set-top box applications, the question data will be preloadedand simply triggered by the event.

Event triggers will be read on playback of an encoded tape. As theepisode is being broadcast, the event trigger will be read by thedecoder. The VBI decoder will read the trigger from the tape andtransmit the trigger to the Game Manager application. The Game Managerwill then create a new game event message to transmit to attachedclients.

Sample Game Event Message:   <message type=’game’to=’player@gamebox.com’ from=’gamemanager@gamebox.com’>    <x:channel:question>         <question>What's the host wearingnow?</question>         <answer>A red shirt</answer>         <answer>Apurple shirt</answer>         <answer>Nothing</answer>    </x:channel:question>    </message>Presence

The final type of messaging utilizes presence packets. Presence packetsare used to manage players' availability and status during the game.Very basic in nature, these packets consist of two primary messagecomponents. The first is the “type” which sets a user's status. Samplevalues are “away”, “present”, “playing” and “chatting”. The second is a“from” attribute that is used to identify the sender of the packet.

Sample Presence Packet:

<presence type=‘playing’ from=‘player@gamebox.com/>

One-Screen Trivia Embodiment

Introduction

In contrast to the two-screen Flash client discussed above, now considera “one-screen” (e.g., set-top box client) program-synchronous gamingapplication in which the client application resides on a user's set-topbox, and communication is performed via a broadcast carousel/socketconnection.

The application is again a trivia game based on information supplied bythe associated program. From the user's perspective, the applicationwill be launched upon navigation to the appropriate channel. Once theapplication has been loaded and launched, the user is prompted to login.Authentication is performed by the Jabber communication server. Onceauthenticated, a persistent connection to the Jabber server isestablished, at which point the Jabber server exchanges the appropriategame data with the client application running on the client set-top box.

Once this point has been reached, there are again three primary forms ofclient-server communication. Chat communication between the clientapplication and the server, Trigger and Game information sent from theserver to the client, and Presence information sent from the client tothe server. All communication is asynchronous and is in the form ofJabber XMPP packets. Identification of all Jabber elements isimplemented via a JID (Jabber ID).

Communication Among the Set-top Box (STB), Jabber Server Farm, andBroadcase Facility Trigger Server

Communication between the STB and the Jabber communication server ishandled by one of two primary methods in this embodiment. STBs thatcontain an integrated cable modem (e.g., Cablevision) communicate viastandard Internet protocols, including a standard TCP/IP connection.Otherwise, a broadcast carousel is used to transport applications anddata.

This broadcast carousel method involves bundling, at the cable head-end,the associated application, data, and optional media sources, identifiedby unique Packet IDs (PID), all encoded into an MPEG stream fortransport up the broadcast channel to the STB. The PIDs are used by theapplication to identify packets within the MPEG stream and areindependent of the Jabber messaging packets.

Because access to these files typically is accomplished via a channelchange, which can happen at any time, the application and data isconstantly sent end to end. Packets can then be picked up mid stream andreassembled into an application and associated data once the carouselcompletes a circuit.

In certain systems (e.g., Satellite/Wink) which contain a limitedback-channel for communication back to the head-end, this method hasbeen used as a “store-and-forward” method where the application is fullyloaded from the broadcast stream and allows for limited communicationback, usually via a late-night call to a communication service. Whilethis method is not preferable, many of the most advanced services (OCAP)still use a combination of these two services for handling full two-waycommunication. The application is streamed via the broadcast carousel tothe STB where it can be assembled into an application. For return data,a socket connection can be established and data transmitted via TCP/IP.Once the socket connection is made, media data can still be pushed upthe broadcast carousel while other forms of smaller data packets canthen be pushed up the socket connection. Far preferable, however, arethe fully integrated cable modem boxes (Cablevision) and the advancedback-channel (OCAP) boxes.

The standard method for communication via the broadcast carouseltypically involves the following steps. Upon a channel change to thedesired application channel, the STB begins assembling the applicationand storing all related resource data on the local file system. Once theapplication is loaded, the STB opens up a communication socket to aserver located at the cable system's head-end. At this point, the serverat the head-end opens up another socket connection to a Jabber server,either located local to the server or at a separate facility. JabberXMPP packets are then transmitted from the Jabber server to the serverlocated at the head-end.

At this point, the time-sensitive data can be transmitted back up thesocket connection to the STB application. Other forms of communication(ad resources, images, audio/video elements, etc.) can also be bundledby the head-end server for transmission up the broadcast carousel. Onekey difference between this application and the walled gardenapplication discussed below is the possible insertion of an additionalJabber server located at the originating broadcast facility.

Opening of Jabber Stream

Registration Phase (Optional)

Immediately following the exchange of XMPP headers, the optionalregistration phase begins. In the case of an existing user, noregistration occurs; instead, the process skips ahead to theauthentication phase. All communication at this phase is implemented viathe XMPP protocol. To create an account, the client makes a request todiscover which information is required from the server. The server thensends a list of required data. The client then responds withuser-supplied data. The server then validates this data, and theregistration is either denied or accepted. Following the registrationphase, the client is passed to the authentication phase. At this point,there is still not a full session until authentication is complete.

Authentication Phase

In the case of an existing user where the registration phase isbypassed, authentication will be done via a user-supplied username andpassword. In the case where a new user is created, authentication isdone via a username and password supplied from the registration phase.In this phase the username and password is passed to the server. Thepassword can either be passed via plaintext or via a list of serveraccepted encryption schemes. When authentication fails the user caneither re-enter their user information or restart from the registrationphase. On successful authentication the user session is then created.

Queued Message Processing

Following successful authentication, any queued messages are thenprocessed. In the case of a one-screen trivia application, this would bethe requisite game data.

Gameplay/Chat/Presence Messaging

This messaging is accomplished in the same manner as discussed abovewith respect to the two-screen Flash application.

Triggers

One of the primary differences between the two-screen and one-screenapplications is trigger handling. In the two-screen application, thetriggers need to be processed by the Game Manager application located atthe broadcast facility (in this embodiment) and then sent to the primaryJabber server farm for transmission to the attached clients via theInternet. The problem with this method is that there is a potential lackof synchronization between the reception of the triggers and the actualbroadcast. In a one-screen application, there exist at least two methodsof enabling tighter control of the synchronization between the triggerreception and the broadcast.

A preferred method is to integrate VBI-decoding functionality into theSTB application layer. The triggers can then simply be read by the STBclient itself as the broadcast is being played back. All content willalready be loaded onto the box, ready for the appropriate trigger.Another preferred method is to have a VBI decoder at the head-endserver. This server can then decode the triggers and transport them upthe socket connection to the attached clients. Because of the proximityof the head-end server to the STB client, any lags will be negligible.

One-Screen Walled Garden Embodiment

Introduction

Finally we consider a “walled garden” application in which a customizednews and information portal is accessible from a set-top box (STB)application. This STB application sports a custom user interfacepermitting the user can gain access to customized news, sports, stockand other information services.

Communication is performed in two phases. The first phase iscommunication between the STB and the Jabber communication server. TheJabber server can either be located at the Multiple Systems Operator's(MSO—cable operator) head-end or, via an MSO's communication routingsystem, located at a co-location facility. This server will thencommunicate via either HTTP or XMPP to other data retrieval services toretrieve customized data and information such as news, or sports scores,which can then be passed back up the broadcast carousel to the STB fordisplay.

Communication between STB and Jabber Comm Server

Communication between the STB and the Jabber communication server ishandled primarily by one of the two methods discussed above (standardInternet protocols for STBs containing an integrated cable modem, andthe broadcast carousel for others).

Opening of Jabber Stream

The underlying communication layer will be opened as previouslydiscussed. Following the opening of the communication layer, thestandard steps for opening a Jabber stream are performed.

Registration Phase

In this embodiment, all STB applications will be started with a defaultuser/password combination unique to the STB. Initial loading of theapplication will load this default user's preferred news set. During theinitial load of the application, the registration phase will always bebypassed. Registration will only occur upon the creation of a new useronce the application has been loaded.

Authentication Phase

During the initial load of the application, the authentication phasewill be bypassed. On user change, the new user will be authenticated.

Queued Message Processing.

Once the authentication phase is complete, the queued message processingphase will occur. It is at this point that the client application willprocess all the message packets (e.g., from the broadcast carouselstream). These messages will consist of the default news data set in theform of XMPP message packets. These packets will be transported via thebroadcast carousel in a data stream identified by a unique PID.

Application-Jabber Communication

Once the application has been loaded, there are three main types of newsinformation that will be accessible. Static data is a set of data sentto all applications for use once the application launches. Custom datais created and added to the broadcast stream based on user preferences.Static and custom data are created and inserted into the broadcaststream and transported into the constantly updating broadcast carousel.Alert data is data pushed in the form of real-time alerts to a loadedapplication via the socket connection.

All data are stored in an XMPP packet format for use by the loadedclient application. In the context of this application, while theapplications still follows the standard method for creating a Jabberstream, some of the phases are simplified to be transparent to the user.Apart from the updating of user preferences (which are stored on theserver), communication primarily involves pushing data to the user, withvery little communication from the user to the Jabber server.

Standard Messaging

During standard operation, the client application can receive two maintypes of messaging packets. The first involves updates to the broadcastcarousel. The client application constantly monitors the data streamidentified by a PID that contains the currently stored news stories.When a change occurs in this data stream, the client applicationprocesses the XMPP-formatted messages and reloads the currentlydisplayed news stories.

The alternate form of messaging involves real-time alerts based oncommunication over the socket connection. These alerts representreal-time data in the form of XMPP-formatted messages. Upon receipt ofthese messages, the client application signals the user and displays thenew message accordingly.

Jabber Application Modules

The processing of data by the Jabber server utilizes three primarycustom Jabber modules. The Jabber Portal Manager handles the processingof external news sources for creating the broadcast carousel data sets.The Jabber Alert module handles the real-time alerts. Finally, theJabber Preferences Module handles the updating of user preferenceinformation.

Jabber Portal Manager Module

The Jabber Portal Manager is the primary application for data retrievaland packaging for insertion into the broadcast carousel. The PortalManager resides as a daemon application on the Jabber server. The daemonregularly checks and retrieves news data from partnered news andinformation XML feeds. It packages this data as the appropriate XMPPpacket data.

Once the data is packaged, the Portal Manager has two main tasks. Firstit creates a default data set for all client streams. This default dataset is combined with preference-based data sets and then passed to thehead-end server for the creation of the broadcast carousel streams. Onceit accomplishes this task, it passes all packaged data to the JabberAlert Module for the creation of custom alerts to be passed to thecurrently attached clients. These packets are transported from thePortal Manager to the Alert Manager as if from one user to another in astandard chat application.

Jabber Portal Manager Packets assume the following format in oneembodiment:

<message to=’foo@bar.com’ type=’normal’>  <x xmlns:foo:topic>   <x:foo:topic>Sports</x:foo:topic>    <x:foo:topic>Baseball</x:foo:topic>     <x:foo:topic>BarryBonds</x:foo:topic>  </x>  <subject>News headline One</subject> <body>Yadda Yadda Yadda</body> </message>Jabber Alert Module

The Jabber Alert Module is another omnipresent software daemon that actson an event model based on communication from the Jabber Portal ManagerModule. When the Jabber Alert Module receives data from the PortalManager, the Alert Module processes the incoming packet against thepreferences list of the currently attached clients. When a match isdiscovered, the Alert Module re-addresses and forwards the packet to thehead-end server, which then routes the packet via a socket connection tothe appropriate attached client. Jabber Alert Packets utilize the sameformat as do Portal Manager Message packets, but with type=‘headline’.

Jabber Preferences Module

The Jabber Preferences Module is used for the storage of userpreferences. All user preferences are stored on the Jabber Server forease and security. When users updates their preferences, the updatedpreference data is sent, via the socket connection to the head-end, tothe Jabber Server in the form of an XMPP “iq” packet. The data is sentin the form of a jabber:iq:private iq packet. This packet takesadvantage of a built-in jabber mechanism for storing private user data(usually buddy lists) on the server itself.

These IQ packets assume the following format.

<iq id=’private-89’ type=’set’>  <query xmlns=’jabber:iq:private’>  <topics xmlns=’news:topics’>Sports</topic>   <topicsxmlns=’news:topics’>Baseball</topic>   <topics xmlns=’news:topics’>BarryBonds</topic>   </query> </iq>

While we have illustrated and described various embodiments of thisinvention, these are by way of illustration only and various changes andmodifications may be made within the contemplation of this invention andwithin the scope of the following claims.

1. A data processing method for enabling nodes of a client-servernetwork to interact with broadcast program content, the methodcomprising: detecting, using a server node, the presence on the networkof one or more client nodes; extracting, using a trigger extractor,program-synchronous triggers from within the content of a broadcastprogram; using an application manager, in response to extraction of aprogram-synchronous trigger from a broadcast program, facilitatinginteractive communication, relating to the broadcast program content,between the server node and one or more client nodes whose presence onthe network has been detected by sending, from the server node to theone or more client nodes, data packets in Extensible Messaging andPresence Protocol (XMPP) and comprising trigger information based on theprogram-synchronous triggers and by receiving, from the one or moreclient nodes, other XMPP data packets comprising presence informationrelating to the one or more client nodes; using a game managerconfigured to perform application-specific functionality relating to agame, using a structured information exchange server configured tomanage managing communications with the one or more client nodes, andusing a database for storing information relating to the one or moreclient nodes and their connections; using the server node to extract,during a synchronous event, the program-synchronous triggers and todeliver the program-synchronous triggers to the game manager, and usingthe game manager to respond by generating content, and using thestructured information exchange server to deliver the content to the oneor more client nodes.
 2. The method of claim 1, further comprisingsending, from the server node to the one or more client nodes,additional XMPP data packets comprising game information.
 3. The methodof claim 1, further comprising sending and receiving, between the servernode to the one or more client nodes, additional XMPP data packetscomprising chat communication.
 4. The method of claim 1, furthercomprising inserting the program-synchronous triggers into the broadcastprogram content before broadcasting the broadcast program over abroadcast medium.
 5. The method of claim 1, wherein each of the one ormore client nodes comprises any one or more of a personal computer, atwo-screen Flash client, a set-top box, and/or an integrated computingdevice.
 6. The method of claim 1, wherein the program-synchronoustriggers are in advertising segments of the broadcast program.
 7. Themethod of claim 1, further comprising using a structured informationexchange server configured to manage communications with the one or moreclient nodes.
 8. The system of claim 7, further comprising using astructured information exchange portal manager to process external newssources for creating broadcast carousel data sets; a structuredinformation exchange alter module that is configured to processreal-time alerts; and a structured information exchange preferencemodule that is configured to process updating user preferenceinformation.
 9. The method of claim 1, further comprising reading,during an enhanced broadcast, the program-synchronous triggers from aprogram videotape and sending the program-synchronous triggers to astructured information exchange Agent via a socket connection using anXMPP protocol, and using the structured information exchange Agent totranslate the program-synchronous trigger into content and to a messageto the structured information exchange Server, which broadcasts themessage to each of the one or more client nodes.
 10. The method of claim1, further comprising inserting the program-synchronous triggers using atrigger manager comprising a Flash-based graphical user interface (GUI)that is configured to control playback on a video deck and to insert theprogram-synchronous triggers.
 11. A data processing method for enablingnodes of a client-server network to interact with broadcast programcontent, the method comprising: detecting the presence on the network ofone or more client nodes; extracting program-synchronous triggers fromwithin the content of a broadcast program; in response to extraction ofa program-synchronous trigger from a broadcast program, facilitatinginteractive communication, relating to the broadcast program content,with one or more client nodes whose presence on the network has beendetected by sending, to the one or more client nodes, data packets inExtensible Messaging and Presence Protocol (XMPP) and comprising triggerinformation based on the program-synchronous triggers and by receiving,from the one or more client nodes, other XMPP data packets comprisingpresence information relating to the one or more client nodes; using agame manager configured to perform application-specific functionalityrelating to a game, using a structured information exchange serverconfigured to manage managing communications with the one or more clientnodes, and using a database for storing information relating to the oneor more client nodes and their connections; using the server node toextract, during a synchronous event, the program-synchronous triggersand to deliver the program-synchronous triggers to the game manager, andusing the game manager to respond by generating content, and using thestructured information exchange server to deliver the content to the oneor more client nodes.
 12. The method of claim 11, further comprisingsending, from the server node to the one or more client nodes,additional XMPP data packets comprising game information.
 13. The methodof claim 11, further comprising sending and receiving, between theserver node to the one or more client nodes, additional XMPP datapackets comprising chat communication.
 14. The method of claim 11,wherein the program-synchronous triggers are in advertising segments ofthe broadcast program.
 15. The method of claim 11, further comprisingusing a structured information exchange server configured to managecommunications with the one or more client nodes.
 16. The method ofclaim 11, further comprising reading, during an enhanced broadcast, theprogram-synchronous triggers from a program videotape and sending theprogram-synchronous triggers to a structured information exchange Agentvia a socket connection using an XMPP protocol, and using the structuredinformation exchange Agent to translate the program-synchronous triggerinto content and to a message to the structured information exchangeServer, which broadcasts the message to each of the one or more clientnodes.